1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| class GlRender implements GLSurfaceView.Renderer {
Bitmap bitmap;
public GlRender() { buffer = Util.getFloatBuffer(texCoords); vertBuffer = Util.getFloatBuffer(mArray); indexbuffer = Util.getShortBuffer(indices); bitmap = BitmapFactory.decodeResource(OpenGlTextureActivity.this.getResources(), R.drawable.bg1); }
private short[] indices = { 0, 1, 2, 0, 2, 3 };
float texCoords[] = {
0.0f, 1.0f,
1.0f, 1.0f,
0.0f, 0.0f,
1.0f, 0.0f, };
FloatBuffer buffer;
FloatBuffer vertBuffer;
ShortBuffer indexbuffer;
private float[] mArray = { -0.5f, -0.5f, 0f, -0.5f, 0.5f, 0f, 0.5f, 0.5f, 0f, 1f, 0f, 0f, 1f, -1f, 0f };
@Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glClearColor(0f, 0, 0f, 0f); }
@Override public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); }
@Override public void onDrawFrame(GL10 gl) { gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glEnable(GL10.GL_TEXTURE_2D);
int[] textureids = new int[1];
gl.glGenTextures(1, textureids, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureids[0]);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST); gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertBuffer); gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, buffer);
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_SHORT, indexbuffer);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisable(GL10.GL_TEXTURE_2D);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY); } }
|